//
// Created by zhuyijun on 2021/8/18.
//

#ifndef BASE_VECTOR_H
#define BASE_VECTOR_H
#include <iostream>
//名称空间VECTOR  namespace VECTOR
namespace VECTOR{
    class Vector{
    public:
        enum Mode{RECT,POL};
    private:
        double x;
        double y;
        double mag;
        double ang;
        Mode mode;
        void set_mag();
        void set_ang();
        void set_x();
        void set_y();
    public:
        Vector();
        Vector(double n1,double n2,Mode form = RECT);
        void reset(double n1,double n2,Mode form = RECT);
        ~Vector();
        double xval() const{
            return x;
        }
        double yval(){
            return y;
        }
        double magval(){
            return mag;
        }
        double angval(){
            return ang;
        }
        void polar_mode();
        void rect_mode();
        //运算符重载
        Vector operator+(const Vector &b) const;
        Vector operator-(const Vector &b) const;
        Vector operator-() const;
        Vector operator*(double n) const;
        //友元
        friend Vector operator*(double n,const Vector & a);
        friend std::ostream & operator<<(std::ostream & os,const Vector & v);
    };
    //end namespace VECTOR
}

float Q_rsqrt(float number);

#endif //BASE_VECTOR_H
